package it.gat.client.view;

import it.gat.controller.TipologiaDispositivoController;
import it.gat.model.TipologiaDispositivo;
import java.awt.BorderLayout;
import java.awt.Container;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JInternalFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;
import javax.swing.JOptionPane;
import javax.swing.JToolBar;
import javax.swing.ImageIcon;

public class TipologieDispositivoInternalFrame extends JInternalFrame {
	private JTable table;
	private Container container;
	private TipologieDispositivoInternalFrame thisFrame;
	/**
	 * Create the frame.
	 */
	public TipologieDispositivoInternalFrame(String title,final Container desktop) {
		super(title);
		this.setClosable(true);
		setBounds(0, 0, 800, 600);
		container = desktop;
		thisFrame = this;
		
		DefaultTableModel model = new DefaultTableModel(getDataTable(),getHeaderTable()){
		    @Override
		    public boolean isCellEditable(int row, int column) {
		       //all cells false
		       return false;
		    }
		};
	    
	    JToolBar toolBar = new JToolBar();
	    getContentPane().add(toolBar, BorderLayout.NORTH);
	    
	    JButton btnNuovo = new JButton("Nuovo");
	    btnNuovo.setIcon(new ImageIcon(TipologieDispositivoInternalFrame.class.getResource("/it/gat/client/img/Nuovo.png")));
	    btnNuovo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				TipologiaDispositivoInternalFrame tipologiaDispositivoInternalFrame = new TipologiaDispositivoInternalFrame("Tipologia Dispositivo",false,desktop,thisFrame);
				desktop.add(tipologiaDispositivoInternalFrame);
				tipologiaDispositivoInternalFrame.setVisible(true);
			}});
	    toolBar.add(btnNuovo);
	    
	    JButton btnModifica = new JButton("Modifica");
	    btnModifica.setIcon(new ImageIcon(TipologieDispositivoInternalFrame.class.getResource("/it/gat/client/img/Modifica.png")));
	    btnModifica.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				TipologiaDispositivoInternalFrame tipologiaDispositivoInternalFrame = new TipologiaDispositivoInternalFrame("Tipologia Dispositivo",true,desktop,thisFrame);
				String codice = (String) table.getModel().getValueAt(table.getSelectedRow(), 0);
				TipologiaDispositivoController ac = new TipologiaDispositivoController();
				tipologiaDispositivoInternalFrame.setTipologiaDispositivo(ac.getTipologiaDispositivo(Integer.parseInt(codice)));
				desktop.add(tipologiaDispositivoInternalFrame);
				tipologiaDispositivoInternalFrame.setVisible(true);
			}});
	    toolBar.add(btnModifica);
	    
	    JButton btnElimina = new JButton("Elimina");
	    btnElimina.setIcon(new ImageIcon(TipologieDispositivoInternalFrame.class.getResource("/it/gat/client/img/Elimina.png")));
	    btnElimina.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				int n = JOptionPane.showConfirmDialog(
						desktop,
					    "Sei sicuro di eliminare l'elemento selezionato?",
					    "Conferma",
					    JOptionPane.YES_NO_OPTION,
					    JOptionPane.QUESTION_MESSAGE);
				if (n==JOptionPane.YES_OPTION)
				{
					TipologiaDispositivoController ac = new TipologiaDispositivoController();
					String codice = (String) table.getModel().getValueAt(table.getSelectedRow(), 0);
					ac.deleteTipologiaDispositivo(Integer.parseInt(codice));
					refresh();
				}
			}});
	    toolBar.add(btnElimina);
	    table = new JTable(model);
	    
	    table.setRowSelectionInterval(0, 0);

	    JScrollPane scrollPane = new JScrollPane(table);
	    
	    getContentPane().add(scrollPane); 

	    setVisible(true); 

	}
	
	private String[] getHeaderTable()
	{
		String[] columnName = {"Codice","Descrizione"};
		return columnName;
	}
	
	private String[][] getDataTable()
	{
		TipologiaDispositivoController cc = new TipologiaDispositivoController();
		List<TipologiaDispositivo> articoli = cc.getTipologiaDispositivoList();
		List<String[]> data = new ArrayList<String[]>();
		for(TipologiaDispositivo tipologiaDispositivo: articoli){
				String[] tipologiaDispositivoArray = {Integer.toString(tipologiaDispositivo.getIdTipologiaDispositivo()),
						                              tipologiaDispositivo.getDescrizione()};
				data.add(tipologiaDispositivoArray);
			}
		return data.toArray(new String[0][0]);
	}
	
	public void refresh()
	{
		DefaultTableModel model = new DefaultTableModel(getDataTable(),getHeaderTable()){
		    @Override
		    public boolean isCellEditable(int row, int column) {
		       //all cells false
		       return false;
		    }
		};
		table.setModel(model);
	}
}
